#include <stdio.h>
void main(void)
{
    // C 语言提供一些预定义的宏，可以直接使用。

    // __DATE__：编译日期，格式为“Mmm dd yyyy”的字符串（比如 Nov 23 2021）。
    // __TIME__：编译时间，格式为“hh:mm:ss”。
    // __FILE__：当前文件名。
    // __LINE__：当前行号。
    // __func__：当前正在执行的函数名。该预定义宏必须在函数作用域使用。
    // __STDC__：如果被设为1，表示当前编译器遵循 C 标准。
    // __STDC_HOSTED__：如果被设为1，表示当前编译器可以提供完整的标准库；否则被设为0（嵌入式系统的标准库常常是不完整的）。
    // __STDC_VERSION__：编译所使用的 C 语言版本，是一个格式为yyyymmL的长整数，C99 版本为“199901L”，C11 版本为“201112L”，C17 版本为“201710L”。
    printf("This function: %s\n", __func__);
    printf("This file: %s\n", __FILE__);
    printf("This line: %d\n", __LINE__);
    printf("Compiled on: %s %s\n", __DATE__, __TIME__);
    printf("C Version: %ld\n", __STDC_VERSION__);

    // #line指令用于覆盖预定义宏__LINE__，将其改为自定义的行号。后面的行将从__LINE__的新值开始计数。
    // printf("-----------\n");
    // #line 300
    // printf("This line: %d\n", __LINE__);
    // printf("-----------\n");
    // #line 300 "newfilename"
    // 下一行的行号重置为300，文件名重置为newfilename。
    //  printf("This file: %s\n", __FILE__);
    // printf("This line: %d\n", __LINE__);
}